package 二叉树;

//654 最大二叉树（分别递归构建左右子树）
public class Solution13 {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        return dfs(0,nums.length-1,nums);
    }
    TreeNode dfs(int l, int r, int[] nums){
        if(l>r) return null;
        int[] max = get_max(l, r, nums);
        TreeNode root = new TreeNode(max[0]);
        root.left = dfs(l,max[1]-1,nums);
        root.right = dfs(max[1]+1,r,nums);
        return root;
    }
    int[] get_max(int l, int r, int[] nums){
        int[] res = {-1, -1};
        for(int i=l;l<=r;l++){
            if(nums[l]>res[0]){
                res[0]=nums[l];
                res[1]=l;
            }
        }
        return res;
    }
}
